package com.hspedu.set_;

import java.util.HashSet;
import java.util.Objects;

/**
 * @author DL5O
 * @version 1.0
 */

@SuppressWarnings("all")
public class HashSetIncrement {
    public static void main(String[] args) {
        /*
            1.HashSet底层是HashMap，第一次添加时，table数组扩容到16，
            临界值(threshold)是16*加载因子(loadFactor) 0.75 = 12

            2.如果table数组使用到了临界值12，就会扩容到16*2 = 32，
              新的临界值就是32* * 0.75 = 24，依次类推。
         */
        HashSet hashSet = new HashSet();
        /*  for (int i = 0; i < 100; i++) {
            hashSet.add(i);//1,2,3,4,5....100
        }*/

       /* for (int i = 0 ; i<=12;i++){
            hashSet.add(new A(i));
        }*/

        /*
            当我们向hashSet增加一个元素时，-> Node -> table,就算增加了一个
         */
        //在一条链表上添加7个A对象
        for (int i = 1; i <= 7 ; i++) {
            hashSet.add(new A(i));
        }

        //在另外一个链表添加7个B对象
        for (int i = 1; i <= 7 ; i++) {
            hashSet.add(new B(i));
        }
    }
}

class B{
    private int n;

    public B(int n){
        this.n = n;
    }

    public int hashCode() {
        return 200;
    }
}


class A{
    private int n;

    public A(int n) {
        this.n = n;
    }

    @Override
    public int hashCode() {
        return 100;
    }
}